package com.likou.second_challenge;

public class q238 {

    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] ans = new int[n];
        ans[0] = 1;
        for (int i = 1; i < n; i++) {
            ans[i] = ans[i - 1] * nums[i - 1];
        }

        int rJi = 1;
        for (int i = n - 1; i >= 0; i--) {
            ans[i] = ans[i] * rJi;
            rJi = rJi * nums[i];
        }

        return ans;
    }

//    public int[] productExceptSelf(int[] nums) {
//        int n = nums.length;
//        int[] leftJ = new int[n];
//        int[] rightJ = new int[n];
//        int[] ans = new int[n];
//
//        leftJ[0] = 1;
//        for (int i = 1; i < n; i++) {
//            leftJ[i] = leftJ[i - 1] * nums[i - 1];
//        }
//
//        rightJ[n - 1] = 1;
//        for (int i = n - 2; i >= 0; i--) {
//            rightJ[i] = rightJ[i + 1] * nums[i + 1];
//        }
//
//        for (int i = 0; i < n; i++) {
//            ans[i] = leftJ[i] * rightJ[i];
//        }
//
//        return ans;
//    }
}
